package com.example.IO;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestIO {
    public static void main(String[] args) throws IOException {
        //method1();
        //method2();
        //method3();

        FileOutputStream fos = null;
        try {
            //System.out.println(2 / 0);
            fos = new FileOutputStream("a.txt", true);
            fos.write(98);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //finally语句里面的代码,一定会被执行
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }

    private static void method3() throws IOException {
        //第二个参数就是续写开关,如果没有传递,默认就是false，
        // 表示不打开续写功能，那么创建对象的这行代码会清空文件，

        //如果第二个参数为true,表示打开续写功能
        // 那么创建对象的这行代码不会清空文件，
        FileOutputStream fos = new FileOutputStream("a.txt", true);

        fos.write("\r\n".getBytes());
        fos.write(97);
        //能加一个换行
        fos.write("\r\n".getBytes());
        fos.write(98);
        fos.write("\r\n".getBytes());
        fos.write(99);
        fos.write("\r\n".getBytes());
        fos.write(100);
        fos.write("\r\n".getBytes());
        fos.write(101);
        fos.write("\r\n".getBytes());
        fos.write(102);

        fos.close();
    }

    private static void method2() throws IOException {
        FileOutputStream fos = new FileOutputStream("a.txt");

//        byte[] bytes = {97, 98, 99};
//        fos.write(bytes);

        byte[] bytes = {97, 98, 99, 100, 101, 102};
        fos.write(bytes, 2, 3);

        fos.close();
    }

    private static void method1() throws IOException {
        //1.创建字节输出流的对象----告诉虚拟机我要往哪个文件中写数据了
        //       注意点:如果文件不存在,会帮我们自动创建出来，
        //             如果文件存在，会把文件清空
        FileOutputStream fos = new FileOutputStream("C:\\a.txt");
        // FileOutputStream fos = new FileOutputStream(new File("a.txt"));

        //2.写数据     传递一个整数时,那么实际上写到文件中的,是这个整数在码表中对应的那个字符
        fos.write(98);

        //3.释放资源
        fos.close();//告诉操作系统,我现在已经不要再用这个文件了
    }
}
